package main
import ("fmt")

// 继承

// 大写的属性和方法表示对外暴露（public）
type Human struct {
	name string
	sex string
}

func (h *Human) Eat(){
	fmt.Println("Human Eat()...")
}

func (h *Human) Walk(){
	fmt.Println("Human Walk()...")
}

// 伪继承
type SuperMan struct {
	Human // 继承了Human的方法
	level int
}

// 重写“父类”方法
func (s *SuperMan) Eat()  {
	s.Human.Eat() // 可以调用父类方法
	fmt.Println("Superman Eat()...")
}

// 新增方法
func (s *SuperMan) Fly(){
	fmt.Println("Superman Fly()...")
}


func main ()  {
	h := &Human{"alan","male"}
	 
	h.Eat()
	h.Walk()

	s := &SuperMan{
		Human{"alan223","male"},
		1,
	}

	s.Eat()
	s.Walk()
	s.Fly()
	
}